package solution.liuyu2783.offer;

/**
 * 剑指 Offer 05. 替换空格
 */
public class Q05_ReplaceSpace_E {

	/**
     * 将一个字符串中的空格替换成 “%20”。
     * 思路：
     * 令 P1 指向字符串原来的末尾位置，P2 指向字符串现在的末尾位置。P1 和 P2 从后向前遍历，当 P1 遍历到一个空格时，就需要令 P2 指向的位置依次填充 02%（注意是逆序的），否则就填充上 P1 指向字符的值。
     * 从后向前遍是为了在改变 P2 所指向的内容时，不会影响到 P1 遍历原来字符串的内容。
     */
	public static void main(String[] args) {
		String str = "a b c ";
		System.out.println("原值：" + str);
		System.out.println("结果：" + Q05_ReplaceSpace_E.replaceSpace(str));
	}

    public static String replaceSpace(String s) {
        
        StringBuffer sb = new StringBuffer(s);
        int len = sb.length();
        for(int i =0; i < len; i++){
            if(sb.charAt(i) == ' '){
                sb.append("  ");
            }
        }
        int len2 = sb.length() -1;
        for(int i = len-1;i >=0; i--){
            if(s.charAt(i) == ' '){
                sb.setCharAt(len2--,'0');
                sb.setCharAt(len2--,'2');
                sb.setCharAt(len2--,'%');
            }else{
                sb.setCharAt(len2--,s.charAt(i));
            }
        }
        return sb.toString();
    }
}
